<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Set、WeakSet、Map、WeakMap区别介绍</title>
	</head>
	<body>
		原文摘自：https://es6.ruanyifeng.com/#docs/set-map
		1、Set
			-- 成员唯一、无序且不重复
			-- 接受一个数组、类似数组的对象、对象、字符串作为参数
			-- [value, value]，键值与键名是一致的（或者说只有键值，没有键名）
			-- 可以遍历，方法：keys()、values()、entries()、forEach()
			-- 实例属性和方法：size、add、delete、has、clear
		
		2、WeakSet
			-- 成员只能是对象，而不能是其他类型的值，key唯一、无序且不重复
			-- 接受一个数组或类似数组的对象作为参数:[[value, value]]==>{[value, value]}
			-- 成员都是弱引用，可以被垃圾回收机制回收，可以用来保存DOM节点，不容易造成内存泄漏
			-- 不能遍历
			-- 实例属性和方法：add、delete、has、clear
		
		3、Map
			-- 本质上是键值对的集合，类似集合,key唯一、无序且不重复
			-- “键”的范围不限于字符串，各种类型的值都可为键
			-- 可以遍历，方法：keys()、values()、entries()、forEach()
			-- 实例属性和方法：size、get、set、has、delete、clear
		
		4、WeakMap
			-- 只接受对象作为键名（null除外），不接受其他类型的值作为键名
			-- 键名所指向的对象，不计入垃圾回收机制，会自动清楚不在引用的对象
			-- 键名是弱引用，键值可以是任意的，键名所指向的对象可以被垃圾回收，此时键名是无效的
			-- 不能遍历
			-- 实例属性和方法：get、set、has、delete
	</body>
</html>
